package com.ht.base.system.dao.dao;

import com.ht.base.system.common.pojo.qto.SysUserRoleQTO;
import com.ht.base.system.dao.domain.SysUserRoleDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户和角色关联表 DAO接口
 * 
 * @Author hdx
 * @Date 2023年04月28日
 */
@Mapper 
public interface SysUserRoleDao {

    /**
     * 
     * 方法insert的功能描述：新增用户和角色关联表
     * 
     * @param record
     * @return int
     * <PRE>
     * author hdx 
     * Date 2023年04月28日
     * </PRE>
     */
    int insert(SysUserRoleDO record);

    /**
     * 
     * 方法deleteById的功能描述：根据Id删除用户和角色关联表
     * 
     * @param id
     * @return int
     * <PRE>
     * author hdx 
     * Date 2023年04月28日
     * </PRE>
     */
    int deleteById(Long id);

    int deleteByUserId(Long sysUserId);
    int deleteByRoleId(Long sysRoleId);

    /**
     * 
     * 方法updateById的功能描述：根据Id更新用户和角色关联表
     * 
     * @param record
     * @return int
     * <PRE>
     * author hdx 
     * Date 2023年04月28日
     * </PRE>
     */
    int updateById(SysUserRoleDO record);

    /**
     * 
     * 方法findById的功能描述：根据Id查询用户和角色关联表
     * 
     * @param id
     * @return SysUserRoleDO
     * <PRE>
     * author hdx 
     * Date 2023年04月28日
     * </PRE>
     */
    SysUserRoleDO findById(Long id);

    Integer countByRoleId(@Param("sysRoleId") Long sysRoleId);

    List<SysUserRoleDO> findByCondition(SysUserRoleDO record);

    Integer findForPageCount(SysUserRoleQTO qto);
    List<SysUserRoleDO> findForPage(SysUserRoleQTO qto);

    SysUserRoleDO findByUserId(@Param("sysUserId") Long sysUserId);
}